package Day_0201.JUC;

/**
 * @author zxc
 * @date 2023/02/01 22:38
 **/
public class AQS {
    public static void main(String[] args) {
        /**
         * AQS的定义
         * ===》
         * 1.AQS全称为AbstractQueuedSychronizer，翻译过来应该是抽象队列同步器。
         *
         * 2.如果说java.util.concurrent的基础是CAS的话，
         * 那么AQS就是整个Java并发包的核心了，ReentrantLock、CountDownLatch、Semaphore等等都用到了它。
         *
         * 3.AQS实际上以双向队列的形式连接所有的Entry，
         * 比方说ReentrantLock，所有等待的线程都被放在一个Entry中并连成双向队列，前面一个线程使用ReentrantLock好了，
         * 则双向队列实际上的第一个Entry开始运行。
         *
         * 3.AQS定义了对双向队列所有的操作，
         * 而只开放了tryLock和tryRelease方法给开发者使用，开发者可以根据自己的实现重写tryLock和tryRelease方法，以实现自己的并发功能。
         */
    }
}
